Skip to content

Conversation

@alebedev87
Copy link
Contributor

This commit implements HTTPKeepAliveTimeout tuning option of the IngressController API allowing customers to configure timeout http-keep-alive.

In OCP versions prior to 4.16, this timeout was not respected (see haproxy/haproxy#2334). This implementation brings the ability to adjust the behavior to match pre-4.16 configurations.

@openshift-ci-robot openshift-ci-robot added jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Nov 27, 2025
@openshift-ci-robot
Copy link
Contributor

@alebedev87: This pull request references Jira Issue OCPBUGS-66135, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.20.z) matches configured target version for branch (4.20.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-61858 is in the state Verified, which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-61858 targets the "4.21.0" version, which is one of the valid target versions: 4.21.0
  • bug has dependents

Requesting review from QA contact:
/cc @ShudiLi

The bug has been updated to refer to the pull request using the external bug tracker.

In response to this:

This commit implements HTTPKeepAliveTimeout tuning option of the IngressController API allowing customers to configure timeout http-keep-alive.

In OCP versions prior to 4.16, this timeout was not respected (see haproxy/haproxy#2334). This implementation brings the ability to adjust the behavior to match pre-4.16 configurations.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 27, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign knobunc for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@alebedev87
Copy link
Contributor Author

/retitle [WIP] [release-4.20] OCPBUGS-66135: Implement HTTPKeepAliveTimeout tuning option

Until openshift/api#2607 is merged.

@openshift-ci openshift-ci bot changed the title [release-4.20] OCPBUGS-66135: Implement HTTPKeepAliveTimeout tuning option [WIP] [release-4.20] OCPBUGS-66135: Implement HTTPKeepAliveTimeout tuning option Nov 27, 2025
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Nov 27, 2025
This commit implements `HTTPKeepAliveTimeout` tuning option of the IngressController API
allowing customers to configure `timeout http-keep-alive`.

In OCP versions prior to 4.16, this timeout was not respected (see haproxy/haproxy#2334).
This implementation brings the ability to adjust the behavior to match pre-4.16 configurations.
Move `resolveIngressControllerAddress` and `canaryImageReference`
functions from the idle connection test file to `util_test.go`
because they are used in two places now.
Add `checkRouteConnectivity` function to poll a route with GET requests.
@alebedev87 alebedev87 force-pushed the release-4.20-http-keep-alive branch from 08d38ea to ac8456d Compare December 2, 2025 14:35
@alebedev87 alebedev87 changed the title [WIP] [release-4.20] OCPBUGS-66135: Implement HTTPKeepAliveTimeout tuning option [release-4.20] OCPBUGS-66135: Implement HTTPKeepAliveTimeout tuning option Dec 2, 2025
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 2, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 2, 2025

@alebedev87: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-operator ac8456d link true /test e2e-aws-operator
ci/prow/e2e-hypershift ac8456d link true /test e2e-hypershift

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@ShudiLi
Copy link
Member

ShudiLi commented Dec 3, 2025

The router pod was restarted after sending heavy traffic(httpKeepAliveTimeout: 15s)

1.
% oc get clusterversion                                          
NAME      VERSION                                                AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.20.0-0-2025-12-03-013224-test-ci-ln-3yv14bt-latest   True        False         23m     Cluster version is 4.20.0-0-2025-12-03-013224-test-ci-ln-3yv14bt-latest

2.
% oc -n openshift-ingress-operator get ingresscontroller default -oyaml | yq ".spec.tuningOptions"
httpKeepAliveTimeout: 15s

3.
oc -n openshift-ingress rsh router-default-796bd456c6-tnmd4 
sh-5.1$ env | grep -i live
ROUTER_SLOWLORIS_HTTP_KEEPALIVE=15s

sh-5.1$ rpm -qa | grep -i haproxy
haproxy28-2.8.10-1.rhaos4.17.el9.x86_64

4.
% oc -n openshift-ingress get pods                                       
NAME                              READY   STATUS    RESTARTS      AGE
router-default-796bd456c6-tnmd4   1/1     Running   1 (10m ago)   15m

5.
 % oc -n openshift-ingress logs router-default-796bd456c6-tnmd4  --tail=10
I1203 03:09:08.647109       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.647368       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.648118       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.648423       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.648690       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.649009       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.649757       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
I1203 03:09:08.650283       1 template_helper.go:370] "msg"="parseIPList empty list found" "logger"="template"
E1203 03:09:08.651505       1 haproxy.go:418] can't scrape HAProxy: dial unix /var/lib/haproxy/run/haproxy.sock: connect: no such file or directory
I1203 03:09:08.696887       1 router.go:665] "msg"="router reloaded" "logger"="template" "output"=" - Checking http://localhost:80 ...\n - Health check ok : 0 retry attempt(s).\n"
%  

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants